#include <stdio.h>
#include <arpa/inet.h>

typedef union 
{
    unsigned int x;
    unsigned char datas[4];
} Data;


int main(int argc, char const *argv[])
{
    Data d1 = {0x01020304};
    // 主机字节序（小端）
    printf("LSB byte is %02x, MSB byte is %02x\n", d1.datas[0], d1.datas[3]);

    // 将d1中的x数据的字节序转化为大端（网络端）
    d1.x  = htonl(d1.x);
    printf("LSB byte is %02x, MSB byte is %02x\n", d1.datas[0], d1.datas[3]);

    unsigned short port = 22; // 小端
    uint16_t port2 = htons(port);
    printf("主机字节序数据： %d, 网络字节序数据： %d->%d\n", port, port2, ntohs(port2));

    return 0;
}

